<?php

class ParserFactory
{
	public static function GetParserFromTagInfo($tag)
	{
		/*
		Esto reconocerá el tipo de tag y creará un parser apropiado
		Ahora lo haré a capón, pero en algún momento tendré que hacer un
		mecanismo para registrar parsers para tipos de tag precompilados adicionales.
		*/
		
		/*
		$tag tiene los campos
		tag:			el nombre del tag
		literal:		el contenido literal del tag de apertura
		pos:			la posición en la que está el runat="server" dentro del innerhtml de su contenedor 
		tag_start:	la posición en la que empieza el tag de apertura (<)
		tag_end:		la posición en la que termina el tag de apertura (>)
		id:			el valor del atributo id (es obligatorio)
		short_tag:	bool que indica si el tag es autocontenido (<img src="xxxx" />)
		close_start:	la posición en la que empieza el tag de cierre
		close_end:	la posición en la que termina el tag de cierre		
		*/
		
		/*
		Antes de esto tendrá que ir un if que detecte si el $tag corresponde a una directiva de include de un userControl
		*/
		if($tag["isUc"])
		{
			return new RegisteredControlParser($tag);
		}
		else
		{
			switch($tag["tag"])
			{
				case "img": return new ImageControlParser($tag);
				case "input":
				case "select": return new InputControlParser($tag);
				default: return new HtmlControlParser($tag);			
			}
		}
		
	}
	
	public static function GetParserFromFile($filename)
	{
		$ext = strtolower(get_extension($filename));
		$ext_page = PageParser::$allowed_extensions;
		$ext_control = UserControlParser::$allowed_extensions;
		
		echo "GetParserFromFile($filename)\n$ext\n";
		
		if(in_array($ext, $ext_page))		
		{
			return new PageParser($filename);
		}
		else if(in_array($ext, $ext_control))
		{
			return new UserControlParser($filename);
		}
		else
		{
			return null;
		}
	}

}

?>